package com.zm.blog.aop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 资源权限验证注解<br>
 * 用于标记需要进行特定资源权限验证的方法
 *
 * 使用示例：
 * {@code
 * @ResourceCheck("user:delete")   // 需要用户删除权限
 * public void deleteUser() {...}
 *
 * @ResourceCheck("order:create")  // 需要订单创建权限
 * public void createOrder() {...}
 * }
 */
@Target(ElementType.METHOD)              // 指定该注解只能用于方法上
@Retention(RetentionPolicy.RUNTIME)      // 指定注解在运行时可通过反射获取
public @interface ResourceCheck {

    /**
     * 资源权限标识符
     *
     * 格式建议：[资源类型]:[操作类型] 或 [模块]:[功能]
     * 例如：
     *   "user:delete" - 用户删除权限
     *   "order:query" - 订单查询权限
     *   "system:config" - 系统配置权限
     *
     * 实际使用中应建立统一的权限标识规范
     *
     * @return 访问该方法所需的资源权限标识
     */
    String value();  // 必须指定权限标识

}
